package fr.janua.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

import fr.janua.shared.UserDTO;

@RemoteServiceRelativePath("LoginService")
public interface LoginService extends RemoteService {
	/**
	 * Utility class for simplifying access to the instance of async service.
	 */
	public static class Util {
		private static LoginServiceAsync instance;

		public static LoginServiceAsync getInstance() {
			if (instance == null) {
				instance = GWT.create(LoginService.class);
			}
			return instance;
		}
	}

	/**
	 * Check si le nom et mot de passe correspondent.
	 * @param name
	 * @param password
	 * @return
	 */
	UserDTO loginServer(String name, String password);

	/**
	 * Reconnecte l'utilisateur.
	 * @return
	 */
	UserDTO loginFromSessionServer();

	/**
	 * Modifie le mot de passe.
	 * @param name
	 * @param newPassword
	 * @return
	 */
	boolean changePassword(String name, String newPassword);

	/**
	 * Déconnecte l'utilisateur courant.
	 */
	void logout();
}
